#ifndef _DETECTOR_H_
#define _DETECTOR_H_

#include "opencv.hpp"
#include <string>
#include <vector>
#include <iostream>

class Detector
{
public:
	Detector(){};
	virtual ~Detector(){};

	//return nmber of detected object, return -1 if error
	virtual int detectObjects(std::vector<cv::Rect>& outDetectedObjects, std::vector<double>& outConfidences, cv::Mat& inFrame) = 0;

	void setObjectType(std::string inObjectType) {mObjectType = inObjectType;} ;
	const std::string getObjectType() const {return mObjectType;};

	void setDetectorType(std::string inDetectorType) {mDetectorType = inDetectorType;};
	const std::string getDetectorType() const {return mDetectorType;};

	void setAPrioriConfidence(double inAPrioriConfidence){mAPrioriConfidence = inAPrioriConfidence;};
	const double getAPrioriConfidence(){return mAPrioriConfidence;}; //Probably won't be used :)
protected:
	//type of object (SideCar, RearCar, etc.)
	std::string						mObjectType;
	//type of detector (HaarLike, PCA, else)
	std::string						mDetectorType;
	//What's the hit confidence in that classifier ?
	double							mAPrioriConfidence;
private:
	
};


#endif

